package com.demo.java.OD151_200.OD161;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【快递货车】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145765610
 */
public class OdMain {
    public static void main(String[] args) {
        // 使用 try-with-resources 自动关闭资源
        try (Scanner scanner = new Scanner(System.in)) {
            // 读取输入的快递重量列表，使用逗号分隔
            String weightsString = scanner.nextLine();
            // 读取卡车的最大承载重量
            int capacity = scanner.nextInt();
            // 调用方法解决问题
            solveMethod(weightsString, capacity);
        }
    }

    /**
     * 该方法负责解决快递装载问题
     *
     * @param weightsString 快递的重量列表，逗号分隔的字符串
     * @param capacity      卡车的最大承载重量
     */
    private static void solveMethod(String weightsString, int capacity) {
        // 将输入的重量字符串按照逗号分隔，并转换为整数数组
        int[] weights = Arrays.stream(weightsString.split(","))
                .mapToInt(Integer::parseInt) // 将字符串数组转换为整数
                .sorted() // 对重量数组进行升序排序
                .toArray(); // 将排序后的结果转换回数组

        int totalWeight = 0; // 当前已装载的总重量
        int index = 0; // 当前正在装载的快递的索引

        // 遍历所有快递的重量，尽量装载到卡车中
        while (index < weights.length && totalWeight + weights[index] <= capacity) {
            totalWeight += weights[index++]; // 装入当前的快递，并更新已装载的总重量
        }

        // 输出能够装入卡车的快递数量，即循环的次数
        System.out.println(index);
    }
}